package co.edu.eam.persitencia.entidades;


import co.edu.eam.persitencia.enumeraciones.SexoEnum;
import co.edu.eam.persitencia.enumeraciones.TipoDocumentoEnum;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;


@NamedQueries({
    @NamedQuery(name=Paciente.CONSULTA_LISTAR_PACIENTES,query=("SELECT paciente FROM Paciente paciente")),
})


@Entity
@Table(name="Clinica_Paciente")

public class Paciente extends Persona {
	
       public static final String CONSULTA_LISTAR_PACIENTES= "Paciente.ListarPacientes";
	/**
	 * EPS del paciente.
	 */
        
        @ManyToOne
        @JoinColumn(name="Paciente_eps")
	private EPS eps;
        
	
        @OneToOne
        @JoinColumn(name="Paciente_historiaClinica")
        private HistoriaClinica historiaClinica;
        
        /**
	 * Lista de acudientes de la persona.
	 */
        
        @OneToMany(mappedBy = "paciente", cascade= CascadeType.ALL)
	private List<Acudiente> acudientes;
        
        /**
	 * Lista de acudientes de la persona.
	 */
       
       @OneToMany(mappedBy = "paciente",cascade= CascadeType.ALL)
	private List<Consulta> consultas;
	/**
	 * Ocupacion del paciente.
	 */
        @Column(name="Paciente_ocupacion")
	private String ocupacion;
	
        @Column(name="Paciente_fechaNacimiento")
        @Temporal(javax.persistence.TemporalType.DATE)
	private Date fechaNacimiento;
	
	/**
	 * Constructor sin parametros.
	 */
	public  Paciente() {
		
	}

      /**
	 * @param documento
	 * @param primerNombre
	 * @param segundoNombre
	 * @param primerApellido
	 * @param segundoApellido
	 * @param tipoDocumento
	 * @param direccion
	 * @param email
	 * @param sexo
	 * @param eps
	 * @param ocupacion
	 */
	public Paciente(String documento, String primerNombre,
			String segundoNombre, String primerApellido,
			String segundoApellido, TipoDocumentoEnum tipoDocumento,
			String direccion, String email, SexoEnum sexo, EPS eps,
			String ocupacion) {
		super(documento, primerNombre, segundoNombre, primerApellido, segundoApellido, tipoDocumento, direccion, email, sexo, email);
		this.eps = eps;
		this.ocupacion = ocupacion;
	}



	/**
	 * @return the eps
	 */
	public EPS getEps() {
		return eps;
	}



	/**
	 * @param eps the eps to set
	 */
	public void setEps(EPS eps) {
		this.eps = eps;
	}



	/**
	 * @return the acudientes
	 */
	public List<Acudiente> getAcudientes() {
		return acudientes;
	}



	/**
	 * @param acudientes the acudientes to set
	 */
	public void setAcudientes(List<Acudiente> acudientes) {
		this.acudientes = acudientes;
	}



	/**
	 * @return the ocupacion
	 */
	public String getOcupacion() {
		return ocupacion;
	}



	/**
	 * @param ocupacion the ocupacion to set
	 */
	public void setOcupacion(String ocupacion) {
		this.ocupacion = ocupacion;
	}
        
        
	
	//TODO:falta toString

    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public List<Consulta> getConsultas() {
        return consultas;
    }

    public void setConsultas(List<Consulta> consultas) {
        this.consultas = consultas;
    }

    public HistoriaClinica getHistoriaClinica() {
        return historiaClinica;
    }

    public void setHistoriaClinica(HistoriaClinica historiaClinica) {
        this.historiaClinica = historiaClinica;
    }
    
    

}
